iT邦幫忙

2023 iThome 鐵人賽

DAY 17
0
AI & Data

ML From Scratch系列 第 17

[Day 17] Multilayer Perceptron

  • 分享至 

  • xImage
  •  

https://ithelp.ithome.com.tw/upload/images/20230917/201528219V62BeYaTi.jpg

Prerequisite

Multilayer Perceptron(多層感知器)是一種前向結構的人工神經網絡,映射一組輸入向量到一組輸出向量。

Artificial Neural Networks

https://ithelp.ithome.com.tw/upload/images/20230917/20152821X7Qhgt4lWQ.png

Artificial Neural Networks 是一種受到人類大腦運作方式啟發的計算模型。

Artificial Neural Networks 是機器學習和深度學習的基礎,旨在模擬生物神經元之間的信息傳遞和處理過程。

其中,神經元可以表示為一個數學函數,接受多個輸入 https://chart.googleapis.com/chart?cht=tx&chl=x_1%2C%20x_2%2C%20%5Cldots%2C%20x_n,這些輸入通過權重 https://chart.googleapis.com/chart?cht=tx&chl=w_1%2C%20w_2%2C%20%5Cldots%2C%20w_n 進行加權總和,並經過 activation function https://chart.googleapis.com/chart?cht=tx&chl=f 後產生輸出 https://chart.googleapis.com/chart?cht=tx&chl=y

https://chart.googleapis.com/chart?cht=tx&chl=y%20%3D%20f(w_1x_1%20%2B%20w_2x_2%20%2B%20%5Cldots%20%2B%20w_nx_n)

而 activation function,它決定神經元的輸出,包括Sigmoid函數、ReLU(整流線性單元)函數和Tanh函數,其中 https://chart.googleapis.com/chart?cht=tx&chl=x 表示總輸入。

例如,Sigmoid函數:https://chart.googleapis.com/chart?cht=tx&chl=f(x)%20%3D%20%5Cfrac%7B1%7D%7B1%20%2B%20e%5E%7B-x%7D%7D

Backpropagation

Backpropagation(反向傳播)是通過計算梯度来更新網路中的參數(weight / bias),以減小模型預測與實際值之間的誤差。

演算法

https://chart.googleapis.com/chart?cht=tx&chl=L 表示損失函數,https://chart.googleapis.com/chart?cht=tx&chl=W 表示權重,https://chart.googleapis.com/chart?cht=tx&chl=b 表示偏差。對於具有 https://chart.googleapis.com/chart?cht=tx&chl=N 層的神經網絡,第 https://chart.googleapis.com/chart?cht=tx&chl=n 層的輸出可以表示為 https://chart.googleapis.com/chart?cht=tx&chl=a%5E%7B(n)%7D,第 https://chart.googleapis.com/chart?cht=tx&chl=n 層的輸入表示為 https://chart.googleapis.com/chart?cht=tx&chl=z%5E%7B(n)%7D

輸入訓練數據和標籤

https://chart.googleapis.com/chart?cht=tx&chl=(X%2C%20Y)

初始化權重和偏差

對每個層 https://chart.googleapis.com/chart?cht=tx&chl=n,初始化 https://chart.googleapis.com/chart?cht=tx&chl=W%5E%7B(n)%7Dhttps://chart.googleapis.com/chart?cht=tx&chl=b%5E%7B(n)%7D

重複以下步驟,直到達到停止條件:

前向傳播

https://chart.googleapis.com/chart?cht=tx&chl=z%5E%7B(n)%7D%20%26%3D%20W%5E%7B(n)%7D%20a%5E%7B(n-1)%7D%20%2B%20b%5E%7B(n)%7D

https://chart.googleapis.com/chart?cht=tx&chl=a%5E%7B(n)%7D%20%26%3D%20%5Csigma(z%5E%7B(n)%7D)

其中 https://chart.googleapis.com/chart?cht=tx&chl=%5Csigma 表示 activation function,通常是 Sigmoid、ReLU 或其他函數。

計算損失

https://chart.googleapis.com/chart?cht=tx&chl=L%20%3D%20%5Ctext%7BLoss%20function%7D(a%5E%7B(N)%7D%2C%20Y)

反向傳播

https://chart.googleapis.com/chart?cht=tx&chl=%5Cdelta%5E%7B(N)%7D%20%26%3D%20%5Cnabla_a%20L%20%5Codot%20%5Csigma'(z%5E%7B(N)%7D)%20%5Cquad

https://chart.googleapis.com/chart?cht=tx&chl=%5Cdelta%5E%7B(n)%7D%20%26%3D%20(W%5E%7B(n%2B1)%7D)%5ET%20%5Cdelta%5E%7B(n%2B1)%7D%20%5Codot%20%5Csigma'(z%5E%7B(n)%7D)%20%5Cquad

其中 https://chart.googleapis.com/chart?cht=tx&chl=%5Cnabla_a%20L表示損失函數相對於輸出的梯度,https://chart.googleapis.com/chart?cht=tx&chl=%5Codot 表示逐元素乘法。

更新參數

https://chart.googleapis.com/chart?cht=tx&chl=%5Cnabla_%7BW%5E%7B(n)%7D%7D%20L%20%26%3D%20%5Cdelta%5E%7B(n)%7D%20(a%5E%7B(n-1)%7D)%5ET

https://chart.googleapis.com/chart?cht=tx&chl=%5Cnabla_%7Bb%5E%7B(n)%7D%7D%20L%20%26%3D%20%5Cdelta%5E%7B(n)%7D

使用梯度下降或其他優化算法來更新權重和偏差:

https://chart.googleapis.com/chart?cht=tx&chl=W%5E%7B(n)%7D%20%26%5Cleftarrow%20W%5E%7B(n)%7D%20-%20%5Calpha%20%5Cnabla_%7BW%5E%7B(n)%7D%7D%20L

https://chart.googleapis.com/chart?cht=tx&chl=b%5E%7B(n)%7D%20%26%5Cleftarrow%20b%5E%7B(n)%7D%20-%20%5Calpha%20%5Cnabla_%7Bb%5E%7B(n)%7D%7D%20L

其中 https://chart.googleapis.com/chart?cht=tx&chl=%5Calpha 表示學習率。

輸出訓練好的神經網絡模型

Loss Functions

Loss Functions(損失函數)是機器學習和深度學習中的重要概念,用於衡量模型的預測結果和實際觀測值之間的差異。

其目標是最小化這種差異,以使模型能夠做出更準確的預測。以下是損失函數的數學 latex 表達和解釋:

在機器學習中,我們通常使用一個訓練數據集(通常包含輸入特徵 https://chart.googleapis.com/chart?cht=tx&chl=X 和對應的實際輸出或標籤 https://chart.googleapis.com/chart?cht=tx&chl=Y)來訓練模型,而模型的預測輸出(通常用 https://chart.googleapis.com/chart?cht=tx&chl=y 表示)與實際標籤之間的差異可以通過損失函數 https://chart.googleapis.com/chart?cht=tx&chl=L(y%2C%20Y) 來衡量。

損失函數的選擇取決於所解決的問題類型,例如分類或回歸。以下是兩個常見的損失函數示例:

  1. 均方誤差(Mean Squared Error,簡稱 MSE):
    https://chart.googleapis.com/chart?cht=tx&chl=(y%2C%20Y)%20%3D%20%5Cfrac%7B1%7D%7Bn%7D%5Csum_%7Bi%3D1%7D%5E%7Bn%7D(y_i%20-%20Y_i)%5E2

    均方誤差用於回歸問題,它衡量了預測值和實際值之間的平方差的平均值。目標是將這個平均差異最小化。

  2. 交叉熵損失(Cross-Entropy Loss):

https://chart.googleapis.com/chart?cht=tx&chl=L(y%2C%20Y)%20%3D%20-%5Csum_%7Bi%7D%5E%7Bn%7D(Y_i%20%5Clog(y_i)%20%2B%20(1%20-%20Y_i)%20%5Clog(1%20-%20y_i))

交叉熵損失通常用於二元分類問題。它衡量了預測概率分佈和實際二元標籤的差異,目標是最小化這種差異,使預測更接近實際標籤。

Optimizers

優化器(Optimizers)是深度學習中的關鍵元件,用於調整神經網絡模型的權重,以最小化或最大化損失函數。優化器的目標是尋找模型參數的最佳值,使模型能夠更好地擬合訓練數據,並在測試數據上實現良好的泛化性能。

在深度學習中,我們通常使用一組參數(權重和偏差)來表示神經網絡模型。這些參數會在訓練過程中不斷更新,以最小化損失函數。優化器的主要工作是計算這些參數的梯度,然後根據梯度的方向和大小來更新參數值。

優化器的目標是尋找模型參數 https://chart.googleapis.com/chart?cht=tx&chl=%5Ctheta 的最佳值,以最小化或最大化損失函數 https://chart.googleapis.com/chart?cht=tx&chl=J(%5Ctheta)。這可以表示為以下的最優化問題:

https://chart.googleapis.com/chart?cht=tx&chl=%5Cmin_%7B%5Ctheta%7D%20J(%5Ctheta)

在每一個訓練迭代中,優化器計算損失函數對參數的梯度,即 https://chart.googleapis.com/chart?cht=tx&chl=%5Cnabla%20J(%5Ctheta),梯度表示了損失函數在當前參數值附近的變化趨勢。優化器根據梯度的方向和大小來更新參數值,以便向損失函數的最小值移動。這個更新過程可以表示為:

https://chart.googleapis.com/chart?cht=tx&chl=%5Ctheta%20%5Cleftarrow%20%5Ctheta%20-%20%5Calpha%20%5Cnabla%20J(%5Ctheta)

其中,https://chart.googleapis.com/chart?cht=tx&chl=%5Calpha 是 Learning Rate,它決定了每次更新的步長。學習率越大,參數更新越快,但可能會導致不穩定的訓練過程;學習率越小,參數更新越穩定,但訓練速度較慢。

不同的優化器有不同的策略來計算梯度和調整參數,例如隨機梯度下降(SGD)、Adam、RMSprop等。每種優化器都有其優點和缺點,選擇適合特定任務的優化器是深度學習中的一個重要決策。

Background

Multilayer Perceptron 是一種人工神經網絡(Artificial Neural Network)的架構。

https://ithelp.ithome.com.tw/upload/images/20230917/201528216jrCdBWsiH.png

MLP 主要用於解決各種機器學習問題,包括分類、回歸、圖像處理和自然語言處理等。

MLP 由多個神經元組成,這些神經元分布在不同的層中,通常包括輸入層、隱藏層和輸出層。以下是 MLP 的主要特點和結構:

  1. 輸入層(Input Layer):接受輸入數據,例如圖像像素、特徵向量或文本數據。
  2. 隱藏層(Hidden Layer):中間層,其內部神經元處理輸入數據,並通過權重和激活函數進行信息傳遞。MLP 可以包含多個隱藏層,具體的結構取決於任務和設計。
  3. 輸出層(Output Layer):最後一層,它生成模型的預測結果。輸出層的數量通常取決於任務的性質,例如二元分類問題可能只有一個輸出神經元,而多類別分類問題可能有多個輸出神經元。
  4. 權重(Weights):每個神經元之間都有權重,用於調整訊號的強度。
  5. 激活函數(Activation Function):激活函數用於引入非線性性質,使 MLP 能夠擬合更複雜的數據。
  6. 反向傳播(Backpropagation):MLP 使用反向傳播算法來訓練模型。

Reference

歡迎更仔細閱讀以下相關內容以了解本篇知識


上一篇
[Day 16] Gaussian Mixture Model — 解決真實問題
下一篇
[Day 18] Neural Network — 背後理論
系列文
ML From Scratch31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言